#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <errno.h>
#include <error.h>

void Child(int cnt)
{
    printf("I am child[%d]->PID[%d]\n",cnt,getpid());
    sleep(cnt);
}

int main()
{
    //printf("进程出错码%d,出错字符串%s\n",errno,strerror(errno));
    
    int cnt = 10;
    while(cnt)
    {

        pid_t id = fork();
        if(id == 0)
        {
           Child(cnt);
           exit(cnt);
        }
        cnt--;
    }
    
    while(1)
    {
        //int ret = wait(NULL);//阻塞等待
        int ret = waitpid(-1,NULL,WNOHANG);//WNOHANG轮循等待
        if(ret > 0)
        {
           printf("wait pid[%d]\n",ret);
        }
        else if(ret == 0)
        {
            //还未等待到子进程结束，可继续进行父进程任务
            printf("wait...\n");
            sleep(1);
        }
        else 
        {
            //出错或者等待全部完成
            printf("wait fail\n");
            sleep(1);
        }
    }
    

    return 0;
}
